www.gusucode.com > VC++ 特殊网址访问器源代码-源码程序 > VC++ 特殊网址访问器源代码-源码程序/code/Demo3/LogDlg.cpp
//Download by http://www.NewXing.com // LogDlg.cpp : implementation file // #include "stdafx.h" #include "Demo03.h" #include "LogDlg.h" //引用声明 #include "LogDaoSet.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CLogDlg dialog CLogDlg::CLogDlg(CWnd* pParent /*=NULL*/) : CDialog(CLogDlg::IDD, pParent) { //{{AFX_DATA_INIT(CLogDlg) //}}AFX_DATA_INIT } void CLogDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CLogDlg) DDX_Control(pDX, IDC_LIST_LOG, m_ctrList); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CLogDlg, CDialog) //{{AFX_MSG_MAP(CLogDlg) ON_NOTIFY(NM_DBLCLK, IDC_LIST_LOG, OnDblclkListLog) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CLogDlg message handlers BOOL CLogDlg::OnInitDialog() { CDialog::OnInitDialog(); //初始化对话框中的内容 //设置column名称 m_ctrList.InsertColumn(0,"操作类型",LVCFMT_LEFT,80); m_ctrList.InsertColumn(1,"记录内容",LVCFMT_LEFT,120); m_ctrList.InsertColumn(2,"有无图片",LVCFMT_LEFT,50); m_ctrList.InsertColumn(3,"访问时间",LVCFMT_LEFT,150); //创建CLogDaoSet的实例 CLogDaoSet m_LogDaoSet; //记录用户序号 int i = 0; CString m_strSQL,strTemp; try { if(m_LogDaoSet.IsOpen()) m_LogDaoSet.Close(); //设置查询条件 m_LogDaoSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"select * from pLog order by LogID DESC",0); //输出匹配上查询条件用户记录,直到记录为空 while(!m_LogDaoSet.IsEOF()) { //将LogType转换 switch(m_LogDaoSet.m_LogType) { case 2: { m_ctrList.InsertItem(i,"访问非法网址"); break; ; } default: { m_ctrList.InsertItem(i,"未知操作"); break; ; } } m_ctrList.SetItemText(i,1,m_LogDaoSet.m_LogInfo); //记录游标移到下一条记录 switch(m_LogDaoSet.m_LogPicFlag) { case 0: { m_ctrList.SetItemText(i,2,"无图片"); break; ; } default: { m_ctrList.SetItemText(i,2,"有图片"); break; ; } } strTemp.Format("%d年%2d月%2d日%2d时%2d分",m_LogDaoSet.m_LogTime.GetYear(), m_LogDaoSet.m_LogTime.GetMonth(),m_LogDaoSet.m_LogTime.GetDay(), m_LogDaoSet.m_LogTime.GetHour(),m_LogDaoSet.m_LogTime.GetMinute()); m_ctrList.SetItemText(i,3,strTemp); m_LogDaoSet.MoveNext(); i++; } //关闭记录集 if(m_LogDaoSet.IsOpen()) m_LogDaoSet.Close(); } //意外捕获 catch(CDaoException*e) { e->ReportError (); //e->Delete (); return FALSE; } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CLogDlg::OnDblclkListLog(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here *pResult = 0; POSITION pos=m_ctrList.GetFirstSelectedItemPosition(); if (pos==NULL) { //如果没有选择记录,则退出 return; } //获取当前记录的位置游标 int m_CurLog=m_ctrList.GetNextSelectedItem(pos); int i=0; //创建一个CFile来保存临时图片, CFile m_PicFile; if(!m_PicFile.Open("C:\\1.jpg",CFile::modeCreate,NULL)) { AfxMessageBox("临时文件打开失败!"); return; } //打开数据库来获取图片内容 CLogDaoSet m_LogDaoSet; try { if(m_LogDaoSet.IsOpen()) m_LogDaoSet.Close(); //设置查询条件 m_LogDaoSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"select * from pLog order by LogID DESC",0); //输出匹配上查询条件用户记录,直到记录为空 while(!m_LogDaoSet.IsEOF()) { m_LogDaoSet.MoveNext(); //如果是被双击的记录,则保存到临时文件中。 if(i == m_CurLog) { m_PicFile.WriteHuge(m_LogDaoSet.m_LogPic.m_hData, m_LogDaoSet.m_LogPic.m_dwDataLength); } i++; } //关闭记录集 if(m_LogDaoSet.IsOpen()) m_LogDaoSet.Close(); //关闭临时文件。 m_PicFile.Close(); //直接调用Windows相关程序来显示图片 ::WinExec("C:\\1.jpg",SW_SHOW); } //意外捕获 catch(CDaoException*e) { e->ReportError (); //e->Delete (); return; } }